๐Ÿ“Œ Docker + MariaDB ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ •๋ฆฌ

WARNING

์›๋ณธ์— ํ‰๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ(root/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ •)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ๋งˆ์Šคํ‚น ์ฒ˜๋ฆฌํ•จ.


macOS ํ™˜๊ฒฝ์—์„œ MariaDB ์ง์ ‘ ์„ค์น˜ ์‹œ ๋ฐœ์ƒํ•œ CTE/WITH ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด

Docker ๊ธฐ๋ฐ˜ MariaDB ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ ,

CLI ์ค‘์‹ฌ์œผ๋กœ ์„œ๋ฒ„ ๊ด€๋ฆฌยท์ ‘์†ยท๊ถŒํ•œ ์„ค์ •ยทSQL import๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ณผ์ • ์ •๋ฆฌ


1. Docker CLI๋ฅผ ํ™œ์šฉํ•œ MariaDB ์„œ๋ฒ„ ๊ธฐ๋™

๐Ÿ”น ๋ชฉ์ 

  • macOS(Homebrew) MariaDB ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•œ CTE(WITH) ํ…Œ์ด๋ธ” ์กฐํšŒ ์˜ค๋ฅ˜ ํšŒํ”ผ
  • ํšŒ์‚ฌ Linux ์„œ๋ฒ„์™€ ๋™์ผํ•œ DB ์—”์ง„/๋™์ž‘ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

๐Ÿ”น ์‚ฌ์šฉ ์ด๋ฏธ์ง€

  • mariadb:10.11.x (ํšŒ์‚ฌ์™€ ๋™์ผ ๋ฉ”์ด์ € ๋ฒ„์ „)

๐Ÿ”น ์„œ๋ฒ„ ๊ธฐ๋™ ๋ช…๋ น์–ด

docker run -d \
  --name mariadb-local \
  -e MARIADB_ROOT_PASSWORD=<PASSWORD> \
  -p 3306:3306 \
  mariadb:10.11
 

๐Ÿ”น ํ•ต์‹ฌ ํฌ์ธํŠธ

  • Docker MariaDB๋Š” ์™„์ „ํžˆ ์ƒˆ๋กœ์šด DB ์„œ๋ฒ„
  • MARIADB_ROOT_PASSWORD๋Š” ์ปจํ…Œ์ด๋„ˆ ์ตœ์ดˆ ์ƒ์„ฑ ์‹œ์—๋งŒ ์ ์šฉ
  • macOS ํ™˜๊ฒฝ ์ œ์•ฝ์„ ์ œ๊ฑฐํ•˜๊ณ  Linux ํŒŒ์ผ์‹œ์Šคํ…œ ๊ธฐ์ค€์œผ๋กœ ๋™์ž‘

2. Docker CLI๋ฅผ ํ†ตํ•œ MariaDB ์ ‘์† ๋ฐฉ๋ฒ•

๐Ÿ”น macOS์— MariaDB Client๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ

  • mysql, mariadb ๋ช…๋ น์–ด๊ฐ€ ์—†์Œ โ†’ ์ •์ƒ
  • ์„œ๋ฒ„ ๋ฌธ์ œ ์•„๋‹˜, ํด๋ผ์ด์–ธํŠธ ๋ฏธ์„ค์น˜ ์ƒํƒœ

๐Ÿ”น ๊ถŒ์žฅ ์ ‘์† ๋ฐฉ๋ฒ• (Docker ๋‚ด๋ถ€ ์ ‘์†)

docker exec -it mariadb-local mariadb -u root -p
 
  • ๋น„๋ฐ€๋ฒˆํ˜ธ: <PASSWORD> (๋งˆ์Šคํ‚น๋จ)
  • ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๊ณ  Docker-only ๋ฐฉ์‹

๐Ÿ”น SQL import ์‹œ ์ฃผ์˜์ 

  • docker exec -i ๋Š” ๋น„๋Œ€ํ™”ํ˜•
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ ๋ถˆ๊ฐ€

์˜ฌ๋ฐ”๋ฅธ import ๋ฐฉ์‹

docker exec -i mariadb-local mariadb -u root -p<PASSWORD> DB_NAME < file.sql
 

๐Ÿ“Œ -p<PASSWORD>์ฒ˜๋Ÿผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ์„œ ์ „๋‹ฌํ•ด์•ผ ํ•จ


3. MariaDB ์‚ฌ์šฉ์ž ์ƒ์„ฑ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ (CLI)

๐Ÿ”น ๋ชฉ์ 

  • root ๊ณ„์ • ๋Œ€์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ ๊ณ„์ • ์‚ฌ์šฉ
  • Spring / ์„œ๋น„์Šค ๊ณ„์ • ๋ถ„๋ฆฌ

๐Ÿ”น ์‚ฌ์šฉ์ž ์ƒ์„ฑ

docker exec -it mariadb-local mariadb -u root -p<PASSWORD> -e "
CREATE USER IF NOT EXISTS 'app_user'@'%' IDENTIFIED BY '<PASSWORD>';
"
 

๐Ÿ”น ์ „์ฒด DB ๊ถŒํ•œ ๋ถ€์—ฌ

docker exec -it mariadb-local mariadb -u root -p<PASSWORD> -e "
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
"
 

๐Ÿ”น ํ™•์ธ

docker exec -it mariadb-local mariadb -u root -p<PASSWORD> -e "
SHOW GRANTS FOR 'app_user'@'%';
"
 

๐Ÿ”น ์ ‘์† ํ…Œ์ŠคํŠธ

docker exec -it mariadb-local mariadb -u app_user -p<PASSWORD>
 

4. macOS ํ™˜๊ฒฝ์—์„œ CTE(WITH) ํ…Œ์ด๋ธ” ์กฐํšŒ ์‹คํŒจ ์›์ธ

๐Ÿ”น ์ฆ์ƒ

  • ํŠน์ • ํ…Œ์ด๋ธ”๋งŒ:

    Table 'xxx' doesn't exist in engine
    'xxx' is not of type VIEW
    
    
  • ์ผ๋ฐ˜ SELECT๋Š” ๊ฐ€๋Šฅ

  • WITH / CTE ๊ตฌ๋ฌธ์—์„œ๋งŒ ์‹คํŒจ


๐Ÿ”น ์›์ธ ์š”์•ฝ

โ‘  macOS ํŒŒ์ผ์‹œ์Šคํ…œ ํŠน์„ฑ

  • ๊ธฐ๋ณธ ํŒŒ์ผ์‹œ์Šคํ…œ: case-insensitive
  • MariaDB ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”/์ž„์‹œ ๊ฐ์ฒด ๊ด€๋ฆฌ์™€ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ

โ‘ก lower_case_table_names = 2 + macOS ์กฐํ•ฉ

  • ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ์œ ์ง€
  • ์กฐํšŒ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ
  • CTE / ์ž„์‹œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๊ณผ์ •์—์„œ ์ด๋ฆ„ ์ •๊ทœํ™” ์ถฉ๋Œ ๋ฐœ์ƒ

โ‘ข ๊ฒฐ๊ณผ

  • InnoDB ์—”์ง„ ๋‚ด๋ถ€์—์„œ
    • ์ž„์‹œ ํ…Œ์ด๋ธ” / CTE ๊ฒฐ๊ณผ๋ฅผ
    • ์‹ค์ œ ํ…Œ์ด๋ธ”๊ณผ ํ˜ผ๋™ํ•˜๊ฑฐ๋‚˜
    • ์—”์ง„ ๋ ˆ๋ฒจ์—์„œ ํ…Œ์ด๋ธ” ๋ฏธ์กด์žฌ๋กœ ํŒ๋‹จ

๐Ÿ“Œ SQL ๋ฌธ๋ฒ• ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ, OS + FS + DB ์กฐํ•ฉ ๋ฌธ์ œ


๐Ÿ”น Docker(Linux)์—์„œ ํ•ด๊ฒฐ๋œ ์ด์œ 

  • Linux ํŒŒ์ผ์‹œ์Šคํ…œ: case-sensitive
  • MariaDB๊ฐ€ ์˜๋„ํ•œ ๋ฐฉ์‹์œผ๋กœ
    • ํ…Œ์ด๋ธ”

    • CTE

    • ์ž„์‹œ ๊ฐ์ฒด

      ๋ฅผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„

โžก ๋™์ผ SQL / ๋™์ผ ๋ฐ์ดํ„ฐ / ๋™์ผ ๋ฒ„์ „์ธ๋ฐ๋„ ์ •์ƒ ๋™์ž‘


โœ… ์ตœ์ข… ๊ฒฐ๋ก 

  • macOS + Homebrew MariaDB๋Š”

    CTE / ๋Œ€์†Œ๋ฌธ์ž / ์—”์ง„ ๋ ˆ๋ฒจ ๋™์ž‘์—์„œ ๋ถˆ์•ˆ์ •

  • Docker ๊ธฐ๋ฐ˜ MariaDB(Linux)๋Š”

    ํšŒ์‚ฌ ์„œ๋ฒ„์™€ ๊ฐ€์žฅ ๋™์ผํ•œ ์‹คํ–‰ ํ™˜๊ฒฝ

  • ๋ฌธ์ œ์˜ ๋ณธ์งˆ์€:

    โŒ SQL

    โŒ MyBatis

    โŒ ํ…Œ์ด๋ธ” ์†์ƒ

    โญ• OS + ํŒŒ์ผ์‹œ์Šคํ…œ + MariaDB ๋‚ด๋ถ€ ๋™์ž‘ ์ฐจ์ด


โœจ ํ•œ ์ค„ ์š”์•ฝ

Docker MariaDB๋Š” ๋‹จ์ˆœํ•œ ๋Œ€์ฒด ์ˆ˜๋‹จ์ด ์•„๋‹ˆ๋ผmacOS์—์„œ ์žฌํ˜„ ๋ถˆ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ๋กœ์ปฌ์—์„œ ๋ณต์ œํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.